package br.com.werp.regras.almoxarifado.visao.decorador;

import br.com.werp.regras.almoxarifado.controle.ControleMovimentacao;
import br.com.werp.regras.geral.helpers.ProdutoEmpresaHelper;
import br.com.werp.regras.geral.helpers.ProdutoHelper;
import br.com.werp.regras.geral.util.Constantes;
import br.com.werp.regras.geral.util.Dia;
import br.com.werp.regras.geral.util.FormatDate;
import br.com.werp.regras.geral.util.Html;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.vos.almoxarifado.SaidaSaida_ItemVO;
import br.com.werp.regras.geral.vos.tabelas.Produto;
import br.com.werp.regras.geral.vos.tabelas.Produto_empresa;

import org.displaytag.decorator.TableDecorator;


/**
 * @author Sobreira
 * Criado em 04/11/2005
 */
public class AtenderProduto extends TableDecorator {
    public ControleMovimentacao controleMovimentacao = new ControleMovimentacao();

    public String getPrem_produto() throws Exception {
        SaidaSaida_ItemVO itemVO = (SaidaSaida_ItemVO) getCurrentRowObject();

        Produto_empresa prod_emp = ProdutoEmpresaHelper.obterProdutoEmpresa(itemVO.getSdit_produto());
        Produto produto = ProdutoHelper.obterProduto(prod_emp.getPrem_produto());

        return produto.getProd_descricao();
    }

    public String getSdit_qtde_solicitada() {
        SaidaSaida_ItemVO saida_ItemVO = (SaidaSaida_ItemVO) getCurrentRowObject();

        return Html.center(saida_ItemVO.getSdit_qtde_solicitada());
    }

    public String getSdit_data_atendimento() {
        SaidaSaida_ItemVO saida_ItemVO = (SaidaSaida_ItemVO) getCurrentRowObject();
        String dtAtend = FormatDate.format(saida_ItemVO.getSdit_data_atendimento(),
                Constantes.DATA_FORMATO);

        return Html.center(Html.inputType("text", 10, 10,
                "sdit_data_atendimento", saida_ItemVO.getId(), "baseField",
                (((dtAtend == null) || "".equals(dtAtend))
                ? new Dia().toString() : dtAtend)));
    }

    public String getSdit_qtde_atendida_banco() throws Exception {
        SaidaSaida_ItemVO saida_ItemVO = (SaidaSaida_ItemVO) getCurrentRowObject();

        return String.valueOf(saida_ItemVO.getSdit_qtde_atendida());
    }

    public String getSdit_qtde_atendida() throws Exception {
        SaidaSaida_ItemVO saida_ItemVO = (SaidaSaida_ItemVO) getCurrentRowObject();
        int qtde = saida_ItemVO.getSdit_qtde_solicitada();
        Produto_empresa produto_empresa = new Produto_empresa();
        produto_empresa.setPrem_id(saida_ItemVO.getSdit_produto());

        int qtdeEstoque = controleMovimentacao.obterQtdeProduto(produto_empresa);

        if ("P".equals(saida_ItemVO.getSaid_status())) {
            return Html.inputType("text", 6, 20, "sdit_qtde_atendida",
                saida_ItemVO.getId(), "baseField",
                ((qtde >= qtdeEstoque) ? qtdeEstoque : qtde));
        } else {
            return Html.center(Html.inputType("text", 6, 20,
                    "sdit_qtde_atendida", saida_ItemVO.getId(), "baseField",
                    qtde));
        }
    }

    public String getSdit_observacao() {
        SaidaSaida_ItemVO saida_ItemVO = (SaidaSaida_ItemVO) getCurrentRowObject();
        String obs = saida_ItemVO.getSdit_observacao();

        return Html.inputType("text", 20, 50, "sdit_observacao",
            saida_ItemVO.getId(), "baseField", ((obs == null) ? "" : obs));
    }

    public String getEstoque() throws Exception {
        SaidaSaida_ItemVO saida_ItemVO = (SaidaSaida_ItemVO) getCurrentRowObject();

        Produto_empresa produto_empresa = new Produto_empresa();
        produto_empresa.setPrem_id(saida_ItemVO.getSdit_produto());

        int qtdeEstoque = controleMovimentacao.obterQtdeProduto(produto_empresa);

        return Html.center(String.valueOf(qtdeEstoque));
    }

    public String getValor() throws Exception {
        SaidaSaida_ItemVO saida_ItemVO = (SaidaSaida_ItemVO) getCurrentRowObject();

        return Util.formatNumberReal(controleMovimentacao.obterValorSaidaItem(
                saida_ItemVO));
    }
}
